import Message from 'tdesign-miniprogram/message/index';
import { novelAPI } from '~/api/novel';
import { fileAPI } from '~/api/file';
const authUtils = require('~/utils/auth.js');
const { NOVEL_TAGS } = require('~/constants/tags.js');

Page({
  data: {
    // 创作类型：1-单人，2-多人
    creationType: 1,
    
    // 小说数据
    novelData: {
      title: '',
      tags: '',
      description: '',
      coverUrl: '',
      targetChapterCount: ''
    },
    
    // 状态
    creating: false,
    canCreate: false,
    
    // 题材标签相关
    tagsList: NOVEL_TAGS,
    selectedTagIndex: -1
  },

  /**
   * 页面加载
   */
  onLoad() {
    this.checkCreatePermission();
  },

  /**
   * 返回上一页
   */
  onBack() {
    wx.navigateBack();
  },

  /**
   * 选择创作类型
   */
  selectCreationType(e) {
    const type = parseInt(e.currentTarget.dataset.type);
    this.setData({ creationType: type });
    this.checkCreatePermission();
  },

  /**
   * 标题输入
   */
  onTitleInput(e) {
    this.setData({
      'novelData.title': e.detail.value
    });
    this.checkCreatePermission();
  },

  /**
   * 标签选择变化
   */
  onTagChange(e) {
    const index = e.detail.value;
    const selectedTag = this.data.tagsList[index];
    console.log('选择标签:', selectedTag);
    
    this.setData({
      'novelData.tags': selectedTag,
      selectedTagIndex: index
    });
  },

  /**
   * 简介输入
   */
  onDescriptionInput(e) {
    this.setData({
      'novelData.description': e.detail.value
    });
  },

  /**
   * 目标章节数输入
   */
  onTargetChapterInput(e) {
    const value = e.detail.value;
    this.setData({
      'novelData.targetChapterCount': value ? parseInt(value) : ''
    });
  },

  /**
   * 选择封面
   */
  selectCover() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        
        // 显示上传中提示
        wx.showLoading({
          title: '上传中...',
          mask: true
        });
        
        // 上传图片到服务器
        this.uploadImage(tempFilePath);
      },
      fail: (error) => {
        console.error('选择图片失败:', error);
        Message.error({
          context: this,
          content: '选择图片失败'
        });
      }
    });
  },
  
  /**
   * 上传图片到服务器
   */
  uploadImage(tempFilePath) {
    const config = require('~/config/index.js').default;
    const uploadUrl = `${config.baseUrl}/file/upload/cover`;
    const userId = wx.getStorageSync('userId');
    
    console.log('上传图片到:', uploadUrl);
    console.log('用户ID:', userId);
    
    wx.uploadFile({
      url: uploadUrl,
      filePath: tempFilePath,
      name: 'file',
      formData: {
        'imageType': '6', // 6表示小说类型
        'userId': userId || '1' // 用户ID，如果没有则使用默认值
      },
      success: (res) => {
        wx.hideLoading();
        console.log('上传响应:', res);
        
        try {
          const data = JSON.parse(res.data);
          if (data.code === 200 && data.data) {
            // 处理封面URL
            let coverUrl = data.data.coverUrl || data.data.url;
            
            // 如果URL不是完整的HTTP地址，需要拼接baseUrl
            if (coverUrl && !coverUrl.startsWith('http') && !coverUrl.startsWith('/static/')) {
              const config = require('~/config/index.js').default;
              coverUrl = `${config.baseUrl}${coverUrl}`;
            }
            
            // 设置封面URL
            this.setData({
              'novelData.coverUrl': coverUrl
            });
            
            Message.success({
              context: this,
              content: '封面上传成功'
            });
          } else {
            throw new Error(data.message || '上传失败');
          }
        } catch (error) {
          console.error('解析上传响应失败:', error);
          Message.error({
            context: this,
            content: '上传失败，请重试'
          });
        }
      },
      fail: (error) => {
        wx.hideLoading();
        console.error('上传图片失败:', error);
        Message.error({
          context: this,
          content: '上传失败，请重试'
        });
      }
    });
  },

  /**
   * 检查创建权限
   */
  checkCreatePermission() {
    const { novelData } = this.data;
    // 标题是必填项，其他字段可选
    const canCreate = novelData.title.trim().length > 0;
    this.setData({ canCreate });
  },

  /**
   * 创建小说
   */
  async onCreateNovel() {
    if (!authUtils.isLoggedIn()) {
      authUtils.redirectToLogin();
      return;
    }

    const { novelData, creationType } = this.data;
    
    // 表单验证
    if (!novelData.title.trim()) {
      Message.warning({
        context: this,
        content: '请输入小说标题'
      });
      return;
    }
    
    // 标题长度验证
    if (novelData.title.trim().length < 2) {
      Message.warning({
        context: this,
        content: '小说标题至少需要2个字符'
      });
      return;
    }
    
    // 多人创作时验证章节数
    if (creationType === 2 && novelData.targetChapterCount) {
      const chapterCount = parseInt(novelData.targetChapterCount);
      if (chapterCount < 3) {
        Message.warning({
          context: this,
          content: '多人创作的目标章节数至少为3章'
        });
        return;
      }
    }

    try {
      this.setData({ creating: true });
      
      // 显示加载提示
      wx.showLoading({
        title: '创建中...',
        mask: true
      });

      const createData = {
        title: novelData.title.trim(),
        description: novelData.description.trim(),
        tags: novelData.tags.trim() || '未分类', // 默认标签
        coverUrl: novelData.coverUrl,
        creationType: creationType,
        // 根据创作类型设置初始状态
        // 单人创作直接进入进行中状态，多人创作进入招募中状态
        status: creationType === 1 ? 2 : 1
      };

      // 多人创作时添加目标章节数
      if (creationType === 2 && novelData.targetChapterCount) {
        createData.targetChapterCount = parseInt(novelData.targetChapterCount);
      }

      const response = await novelAPI.createNovel(createData);
      
      wx.hideLoading();
      
      if (response.code === 200) {
        const createdNovel = response.data;
        
        Message.success({
          context: this,
          content: creationType === 1 ? '创建成功，开始写作吧！' : '创建成功，等待其他人加入！'
        });

        // 延迟跳转，让用户看到成功提示
        setTimeout(() => {
          if (creationType === 1) {
            // 单人创作直接跳转到写作页面
            wx.redirectTo({
              url: `/pages/chapter-write/index?novelId=${createdNovel.id}`
            });
          } else {
            // 多人创作跳转到小说详情页
            wx.redirectTo({
              url: `/pages/novel-detail/index?novelId=${createdNovel.id}`
            });
          }
        }, 1500);
      }
    } catch (error) {
      wx.hideLoading();
      console.error('创建小说失败:', error);
      
      // 根据错误类型显示不同提示
      if (error.code === 401) {
        Message.error({
          context: this,
          content: '登录已过期，请重新登录'
        });
      } else if (error.code === 403) {
        Message.error({
          context: this,
          content: '您没有权限创建小说'
        });
      } else {
        Message.error({
          context: this,
          content: error.message || '创建失败，请重试'
        });
      }
    } finally {
      this.setData({ creating: false });
    }
  }
});
